@echo off
rem 设置UTF-8编码
chcp 65001 >nul
title Hello微服务模块生成器

@echo ======================================
@echo   Hello微服务模块生成器 - 一键启动工具
@echo ======================================
@echo.

rem 检查Node.js
@echo [步骤1] 检查Node.js环境...
node -v
if %ERRORLEVEL% NEQ 0 (
    @echo [错误] 未找到Node.js，请先安装Node.js（版本>=14.0.0）
    @echo 下载地址: https://nodejs.org/
    pause
    exit /b 1
)

rem 确保在正确的目录中
cd /d "%~dp0"
@echo 当前工作目录: %cd%
@echo.

rem 检查项目根目录
@echo [步骤2] 检查项目结构...
cd ..
if exist pom.xml (
    if exist hello-modules (
        if exist hello-common (
            @echo 检测到项目根目录: %cd%
        ) else (
            @echo [警告] 未检测到标准项目结构(hello-common)
        )
    ) else (
        @echo [警告] 未检测到标准项目结构(hello-modules)
    )
) else (
    @echo [警告] 未检测到标准项目结构(pom.xml)
)
cd hello-module-generator
@echo.

rem 清理旧依赖
@echo [步骤3] 清理旧依赖...
if exist node_modules (
    rmdir /s /q node_modules
    @echo 已删除旧依赖
)
if exist package-lock.json (
    del /f /q package-lock.json
    @echo 已删除package-lock.json
)
@echo.

rem 检查Yeoman是否已安装
@echo [步骤4] 检查Yeoman工具...
call yo --version >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
    @echo Yeoman未安装，正在安装...
    call npm install -g yo
    @echo.
) else (
    @echo Yeoman已安装，跳过安装步骤
    @echo.
)

rem 检查项目依赖是否存在
@echo [步骤5] 检查项目依赖...
if exist node_modules (
    @echo 项目依赖已存在，跳过安装步骤
) else (
    @echo 安装项目依赖...
    call npm install --no-fund
)
@echo.

rem 检查特定依赖模块是否存在
@echo [步骤6] 检查特定依赖模块...
if exist node_modules\minimatch if exist node_modules\minipass if exist node_modules\ssri (
    @echo 特定依赖模块已存在，跳过安装步骤
) else (
    @echo 安装特定依赖模块...
    call npm install minimatch minipass ssri --no-fund
)
@echo.

rem 直接使用全局安装方式
@echo [步骤7] 全局安装并启动生成器...
call npm install -g
@echo.
@echo 正在启动生成器...
call yo hello-module

rem 检查是否成功
if %ERRORLEVEL% NEQ 0 (
    @echo.
    @echo [错误] 生成器运行失败
    @echo.
    @echo 请尝试以下手动步骤:
    @echo 1. 以管理员权限打开命令提示符
    @echo 2. 执行: npm install -g yo
    @echo 3. 执行: cd %cd%
    @echo 4. 执行: npm install
    @echo 5. 执行: npm link
    @echo 6. 执行: yo hello-module
    @echo.
    @echo 如果依然失败，尝试全局安装:
    @echo npm install -g generator-hello-module
    @echo yo hello-module
) else (
    @echo.
    @echo [重要提示] 模块生成成功后，请按照以下步骤完成配置:
    @echo 1. 编辑 hello-modules/pom.xml 文件
    @echo 2. 在 ^<modules^> 标签内添加: ^<module^>您的模块名^</module^>
    @echo 3. 重新构建项目: mvn clean install -DskipTests
)

@echo.
@echo ======================================
@echo 按任意键退出...
pause >nul 